package modelo;

import java.util.ArrayList;

public class Personagem {
	
	public String nome;
	//pegar pelo construtor quando for interagir com a vista 
	public int HPmax;
	public int MPmax;
	public int HP;
	public int MP;
	public int lvl = 1;
	private int exp = 0;
	public String classe;
	
	public int volume;
	public int precisao;
	public int velocidade;
	public int feeling;
	public int resistencia;
	
	public String tipoFoco;
	public String foco;
	public ArrayList<String> golpes = new ArrayList<String>();
	
	public Personagem(String nome, String classe) {
			
		this.nome = nome;
		this.classe = classe;
		
		if (this.classe.matches("Vocalista")) {
			this.HP = this.HPmax = 20;
			this.MP = this.MPmax = 80;
			this.volume = 1;
			this.precisao = 5;
			this.velocidade = 5;
			this.feeling = 7;
			this.resistencia = 2;
			
			golpes.add("We are the Champions");
			golpes.add("Who wants to live forever");
			golpes.add("Bismillah!");
			golpes.add("We will Rock you");
		}
		else if (this.classe.matches("Guitarrista")) {
			this.HP = this.HPmax = 60;
			this.MP = this.MPmax =40;
			this.volume = 6;
			this.precisao = 5;
			this.velocidade = 4;
			this.feeling = 3;
			this.resistencia = 2;
			
			golpes.add("The Blues");
			golpes.add("Mute");
			golpes.add("The Riff");
			golpes.add("Distortion");
		} 
		else if (this.classe.matches("Baixista")) {
			this.HP = this.HPmax = 50;
			this.MP = this.MPmax = 50;
			this.volume = 4;
			this.precisao = 4;
			this.velocidade = 4;
			this.feeling = 4;
			this.resistencia = 4;
			
			golpes.add("Blues");
			golpes.add("Cool Bass");
			golpes.add("Forever Bass");
			golpes.add("Purebass");
		} 
		else if (this.classe.matches("Baterista")) {
			this.HP = this.HPmax = 90;
			this.MP = this.MPmax = 10;
			this.volume = 3;
			this.precisao = 3;
			this.velocidade = 4;
			this.feeling = 2;
			this.resistencia = 8;
			
			golpes.add("Loud");
			golpes.add("Fast Pace");
			golpes.add("Hard Rock");
			golpes.add("Techno");
		} 
		else if (this.classe.matches("Tecladista")) {
			this.HP = this.HPmax = 50;
			this.MP = this.MPmax = 50;
			this.volume = 4;
			this.precisao = 7;
			this.velocidade = 2;
			this.feeling = 3;
			this.resistencia = 2;
		
			golpes.add("Arpeggio");
			golpes.add("Scale Down");
			golpes.add("Finger On");
			golpes.add("Calm Melody");
		} 
	}

	public Personagem() {};
	
	public void alteraStatus (int dHP, int dMP) {
		this.HP -= dHP;
		this.MP -= dMP;
	}
	
	public String toString() {
		return ("Nome: " + this.nome + "\nLevel: " + this.lvl + "\nEXP: " + this.exp + "\n\nHP: " + this.HP + "\nMP: " + this.MP + "\nClasse: "
				 + this.classe + "\n\nVolume: " + this.volume + "\nPrecisao: " + this.precisao + "\nVelocidade: " + this.velocidade + "\nFeeling: "
				 + this.feeling + "\nResistencia: " + this.resistencia);	
		}
	
	public boolean alteraLevel (int exp) {
		
		this.exp += exp;
		
		if (this.exp >= (this.lvl)*5)
		{
			this.exp -= (this.lvl)*5;
			++this.lvl;
			
			if (this.classe.matches("Vocalista")) {
				this.HPmax += 2;
				this.MPmax += 8;
				this.precisao += 1;
				this.feeling +=2;
			}
			else if (this.classe.matches("Guitarrista")) {
				this.HPmax += 6;
				this.MPmax += 4;
				this.volume += 1;
				this.velocidade += 1;
				this.precisao += 1;
			} 
			else if (this.classe.matches("Baixista")) {
				this.HPmax += 5;
				this.MPmax += 5;
				this.volume += 1;
				this.resistencia += 1;
				this.feeling += 1;
			} 
			else if (this.classe.matches("Baterista")) {
				this.HPmax += 9;
				this.MPmax += 1;
				this.volume += 1;
				this.resistencia += 2;
			} 
			else if (this.classe.matches("Tecladista")) {
				this.HPmax += 5;
				this.MPmax += 5;
				this.volume += 1;
				this.precisao += 2;
			} 
			
			return true;
		}
		
		return false;
	}

	
	//criar metodo pra deixar alterar os atributos caso ele upe, usar o boolean do alteraLevel

}